package com.car.service;

import com.car.pojo.PageResult;
import com.car.pojo.RepairAppointment;
import com.car.pojo.RepairAppointmentQueryParam;

import java.util.List;
import java.util.Map;

/**
 * 故障预约Service接口
 */
public interface RepairAppointmentService {

    /**
     * 分页查询故障预约
     */
    PageResult<RepairAppointment> page(RepairAppointmentQueryParam param);

    /**
     * 根据ID查询故障预约详情
     */
    RepairAppointment getInfo(Long id);

    /**
     * 更新预约状态
     */
    void updateStatus(Long id, String status);

    /**
     * 更新预约状态和维修员
     */
    void updateStatus(Long id, String status, String empName);

    /**
     * 批量删除故障预约
     */
    void delete(List<Long> ids);

    /**
     * 查询所有故障预约（用于导出等）
     */
    List<RepairAppointment> list(RepairAppointmentQueryParam param);

    /**
     * 添加故障预约
     */
    void add(RepairAppointment appointment);

    /**
     * 根据用户ID查询故障预约记录
     */
    List<RepairAppointment> listByUserId(Long userId);

    /**
     * 根据用户ID统计故障预约数量
     */
    Integer countByUserId(Long userId);

    /**
     * 获取空闲维修员列表
     * 查询job_id=2且status='空闲'的员工
     */
    List<Map<String, Object>> getRepairStaff();

    /**
     * 根据员工名称查询维修预约
     */
    List<RepairAppointment> listByEmpName(String empName);

    /**
     * 统计当前登录员工所关联的状态为'已确认'的维修预约数量
     * @param empName 员工名称
     * @return 数量
     */
    Integer countConfirmedByEmpName(String empName);

    /**
     * 统计当前登录员工所关联的状态为'已完成'的维修预约数量
     * @param empName 员工名称
     * @return 数量
     */
    Integer countCompletedByEmpName(String empName);

}